package com.excilys.capicsoubank.controllers;

import java.util.HashMap;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;

import com.excilys.capicsoubank.entities.Account;
import com.excilys.capicsoubank.services.AccountService;

/**
 * Contrôle l'affichage de la page d'accueil de l'utilisateur.
 * 
 * @author Nicolas Poirier
 */
@Controller
@RequestMapping("/home")
@SessionAttributes("accountsMap")
public class HomeController {

	@Autowired
	private AccountService accountService;

	private static final Logger LOGGER = LoggerFactory
			.getLogger(HomeController.class);

	/**
	 * Contrôleur appelé pour l'adresse /home. Va chercher le user pour le
	 * mettre en session et tri ses comptes.
	 * 
	 * @param model
	 *            le modèle
	 * @return La vue home.jsp
	 */
	@RequestMapping("")
	public String home(Model model) {

		// Va chercher la liste des comptes de l'utilisateur
		List<Account> accounts = accountService.getAccountsConnectedUser();

		// Map utile pour afficher la liste des compte dans le menu
		HashMap<Integer, String> accountsMap = new HashMap<Integer, String>();

		for (Account account : accounts)
			accountsMap.put(account.getAccountId(), account.getLabel());

		model.addAttribute("accounts", accounts);
		model.addAttribute("accountsMap", accountsMap);

		LOGGER.debug("/home");

		return Template.page("home", "home", model, null);
	}
}
